// async function async1() {
//     console.log('async1 start')
//     await async2()
//     console.log('async1 end')
// }
// async function async2() {
//     console.log('async2')
// }
// console.log('script start')
// setTimeout(function () {
//     console.log('setTimeout0')
// }, 0)
// setTimeout(function () {
//     console.log('setTimeout3')
// }, 3)
// setImmediate(() => console.log('setImmediate'));
// console.log('script end')
// // process.nextTick(() => console.log('nextTick'));
// // async1();
// // new Promise(function (resolve) {
// //     console.log('promise1')
// //     resolve();
// //     console.log('promise2')
// // }).then(function () {
// //     console.log('promise3')
// // })
// console.log('script end')

function getRes(num) {
    if (num == 1) return 1;
    let rs1 = (num).toString(2);
    console.log(rs1);
    let odd = 0;
    let even = 0;
    for (let i = 0; i < rs1.length; i++) {
        if (rs1[i] == 1) odd++;
        else even++;
    }
    return Math.min(odd, even + 1);
}

let res = getRes(16);
console.log(res);

